package com.weijian.service;

import com.weijian.dal.vo.OrderVO;
import com.weijian.dal.entity.Order;
import java.util.List;

/**
 * 订单服务接口
 * 定义订单相关的业务方法
 * 
 * @author weijian
 */
public interface OrderService {

    /**
     * 创建订单 - 分布式锁防超卖 + Redis库存管理
     * 
     * @param userId 用户ID
     * @param courseId 课程ID
     * @return 创建的订单
     */
    Order createOrder(Long userId, Long courseId);

    /**
     * 查询用户订单列表
     * 
     * @param userId 用户ID
     * @return 订单列表
     */
    List<OrderVO> getUserOrders(Long userId);

    /**
     * 订单支付（模拟支付）
     * 
     * @param orderId 订单ID
     * @param userId 用户ID
     * @param paymentMethod 支付方式
     */
    void payOrder(Long orderId, Long userId, Integer paymentMethod);

    /**
     * 取消订单
     * 
     * @param orderId 订单ID
     * @param userId 用户ID
     */
    void cancelOrder(Long orderId, Long userId);

    /**
     * 初始化课程库存到Redis（开发测试用）
     * 
     * @param courseId 课程ID
     * @param stock 库存数量
     */
    void initCourseStock(Long courseId, Integer stock);
}